Search
Close this search box.
Group 928Created with Sketch.
Group 67Created with Sketch.
Group 125Created with Sketch.
Group 126Created with Sketch.

Lightning Talk 171 – Modulare Monolithen mit Spring Modulith

In unseren Lightning Talks teilen unsere Software Engineers ihre Erfahrungen mit bestimmten Technologien und geben Impulse für die Projektarbeit. 

Wer sich mit der Entwicklung von Anwendungen in Java beschäftigt weiß, dass der Einsatz eines Frameworks wie Spring die Entwicklung erleichtern kann. Für Backend-Anwendungen, die größer und komplexer sind als klassische Microservices, nutzen wir bei eXXcellent solutions häufig Spring Boot, um die Entwicklung zu beschleunigen. Größere Anwendungen lassen sich typischerweise in unterschiedliche Module aufteilen. Hier setzt Spring Modulith an.

Spring Modulith: Strukturierung komplexer Spring-Boot Anwendungen

Spring Modulith ist ein noch relativ neues Framework im Spring-Ökosystem. Es ermöglicht mithilfe von Annotationen sehr leichtgewichtig Module zu definieren. In diesen Modulen kann dann definiert werden, welche Services zur public API des Moduls gehören. Wenn man sich hier an die Konventionen von Modulith bzgl. der Paketstruktur hält, kommt man mit relativ wenigen Modulith-Annotationen aus. Wenn davon abgewichen wird, lässt sich dies auch realisieren, jedoch mit mehr Konfiguration. Die für die Module definierten Zugriffsregeln lassen sich dann per Unit-Tests verifizieren. Hierfür verwendet Spring Modulith im Hintergrund ArchUnit.

Verifikation von Modul-Abhängigkeiten
Verifikation von Modul-Abhängigkeiten
Integrationstests von Modulen in Isolation
opinionated & eventually consistent Modulinteraktionen
Generieren von Architektur-dokumentationen
Observability von Modulinteraktionen
Previous slide
Next slide

Spring Modulith bringt darüber hinaus Tooling mit, das es erlaubt die definierten Module in Diagrammen zu visualisieren. Diese Diagramme lassen sich automatisiert im Build-Prozess generieren und bleiben so stets aktuell.

Durch Erzeugung von Traces lassen sich Modulinteraktionen in Tools wie Zipkin visualisieren.

Ebenfalls Teil von Modulith ist ein Framework, das Modul-Interaktionen über Events steuert und hierbei Mechanismen zur Fehlerbehandlung vorsieht.

Spring Modulith
Mit Spring Modulith generierte Visualisierung der Modulstruktur

Da es sich bei Modulith noch um ein relativ junges Framework handelt, sollte vor dem Einsatz in einem konkreten Projekt geprüft werden, ob sich das Projekt für Modulith eignet.

Die Definition und Verifikation von Modulen und deren Interaktionen mit Modulith kann relativ leichtgewichtig integriert werden und ist hierdurch am ehesten auch jetzt schon einen Blick Wert. Die komplizierteren Features wie die eventbasierten Modulinteraktionen sollten nur nach sehr sorgfältiger Prüfung eingesetzt werden, da sich hierdurch eine starke Abhängigkeit des Projekts zum Modulith-Framework ergibt.